package com.colbert.jknife.handler;

import com.colbert.jknife.model.FieldCodeSet;
import com.colbert.jknife.model.ICodeSetManager;
import com.squareup.javapoet.CodeBlock;

import javax.lang.model.element.Element;

import java.lang.annotation.Annotation;

public interface IAnnotationHandler {

    boolean checkElement(Element element);

    void makeFieldCodeSet(Element element, ICodeSetManager codeSetManager) throws Exception;

    void checkFieldBlock(FieldCodeSet fieldCodeSet, int id) throws Exception;

    Class<? extends Annotation> getAnnotationType();

    void addIntent(CodeBlock.Builder builder);

    void subIntent(CodeBlock.Builder builder);
}
